package mx.gob.sat.cfd._2.comprobante;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
        "informacionAduanera",
        "cuentaPredial",
        "complementoConcepto",
        "parte"
    })
public class Concepto {
    
    @XmlElement(name = "InformacionAduanera", namespace="http://www.sat.gob.mx/cfd/2")
    private List<TInformacionAduanera> informacionAduanera;
    @XmlElement(name = "CuentaPredial", namespace="http://www.sat.gob.mx/cfd/2")
    private CuentaPredial cuentaPredial;
    @XmlElement(name = "ComplementoConcepto", namespace="http://www.sat.gob.mx/cfd/2")
    private ComplementoConcepto complementoConcepto;
    @XmlElement(name = "Parte", namespace="http://www.sat.gob.mx/cfd/2")
    private List<Parte> parte;

    @XmlAttribute(required = true)
    private BigDecimal cantidad;
    @XmlAttribute(required = true)
    private String descripcion;
    @XmlAttribute(required = true)
    private BigDecimal importe;
    @XmlAttribute
    private String noIdentificacion;
    @XmlAttribute
    private String unidad;
    @XmlAttribute(required = true)
    private BigDecimal valorUnitario;

    public BigDecimal getCantidad() {
        return cantidad;
    }

    public void setCantidad(BigDecimal cantidad) {
        this.cantidad = cantidad;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public BigDecimal getImporte() {
        return importe;
    }

    public void setImporte(BigDecimal importe) {
        this.importe = importe;
    }

    public String getNoIdentificacion() {
        return noIdentificacion;
    }

    public void setNoIdentificacion(String noIdentificacion) {
        this.noIdentificacion = noIdentificacion;
    }

    public String getUnidad() {
        return unidad;
    }

    public void setUnidad(String unidad) {
        this.unidad = unidad;
    }

    public BigDecimal getValorUnitario() {
        return valorUnitario;
    }

    public void setValorUnitario(BigDecimal valorUnitario) {
        this.valorUnitario = valorUnitario;
    }

    /**
     * Gets the value of the informacionAduanera property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the informacionAduanera property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getInformacionAduanera().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TInformacionAduanera }
     * 
     * 
     */
    public List<TInformacionAduanera> getInformacionAduanera() {
        if (informacionAduanera == null) {
            informacionAduanera = new ArrayList<TInformacionAduanera>();
        }
        return this.informacionAduanera;
    }

    public CuentaPredial getCuentaPredial() {
        return cuentaPredial;
    }

    public void setCuentaPredial(CuentaPredial cuentaPredial) {
        this.cuentaPredial = cuentaPredial;
    }

    public ComplementoConcepto getComplementoConcepto() {
        return complementoConcepto;
    }

    public void setComplementoConcepto(ComplementoConcepto complementoConcepto) {
        this.complementoConcepto = complementoConcepto;
    }

    /**
     * Gets the value of the informacionAduanera property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the parte property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getParte().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Parte }
     * 
     * 
     */
    public List<Parte> getParte() {
        if (parte == null) {
            parte = new ArrayList<Parte>();
        }
        return this.parte;
    }

    public void setParte(List<Parte> parte) {
        this.parte = parte;
    }
    

}
